home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / networke / cow / cowl-1.000 / cowl-1 / udpopt.c < prev    next >
C/C++ Source or Header  |  1993-10-15  |  5KB  |  220 lines

  1. /*
  2.  * udpopt.c - present UDP control window
  3.  */
  4. #include "copyright.h"
  5.  
  6. #include <stdio.h>
  7. #include <ctype.h>
  8. #include "Wlib.h"
  9. #include "defs.h"
  10. #include "struct.h"
  11. #include "data.h"
  12.  
  13. #define UDPBORDER    2
  14. #define UDPLEN        35
  15.  
  16. /* Set up the UDP control window */
  17. udpwindow()
  18. {
  19.    register int    i;
  20.  
  21.    for (i = 0; i < UDP_NUMOPTS; i++)
  22.       udprefresh(i);
  23.  
  24.    /* Map window */
  25.    W_MapWindow(udpWin);
  26. }
  27.  
  28. /*
  29.  * Refresh item i
  30.  */
  31. udprefresh(i)
  32.     int             i;
  33. {
  34.    char            buf[BUFSIZ];
  35.  
  36.    switch (i) {
  37.    case UDP_CURRENT:
  38.       sprintf(buf, "UDP channel is %s", (commMode == COMM_TCP) ?
  39.           "CLOSED" : "OPEN");
  40.       break;
  41.    case UDP_STATUS:
  42.       strcpy(buf, "> Status: ");
  43.       switch (commStatus) {
  44.       case STAT_CONNECTED:
  45.      strcat(buf, "Connected");
  46.      break;
  47.       case STAT_SWITCH_UDP:
  48.      strcat(buf, "Requesting switch to UDP");
  49.      break;
  50.       case STAT_SWITCH_TCP:
  51.      strcat(buf, "Requesting switch to TCP");
  52.      break;
  53.       case STAT_VERIFY_UDP:
  54.      strcat(buf, "Verifying UDP connection");
  55.      break;
  56.       default:
  57.      fprintf(stderr, "netrek: UDP error: bad commStatus (%d)\n",
  58.          commStatus);
  59.       }
  60.       break;
  61.    case UDP_DROPPED:
  62.       sprintf(buf, "> UDP trans dropped: %d (%d%% | %d%%)", udpDropped,
  63.           udpDropped * 100 / udpTotal,    /* (udpTotal always > 0) */
  64.           udpRecentDropped * 100 / UDP_RECENT_INTR);
  65.       break;
  66.    case UDP_SEQUENCE:
  67.       sprintf(buf, "Sequence checking is %s", (udpSequenceChk) ?
  68.           "ON" : "OFF");
  69.       break;
  70.    case UDP_DEBUG:
  71.       sprintf(buf, "Debugging info is ");
  72.       switch (udpDebug) {
  73.       case 0:
  74.      strcat(buf, "OFF");
  75.      break;
  76.       case 1:
  77.      strcat(buf, "ON (connect msgs only)");
  78.      break;
  79.       case 2:
  80.      strcat(buf, "ON (verbose output)");
  81.      break;
  82.       }
  83.       break;
  84.    case UDP_SEND:
  85.       sprintf(buf, "Sending with ");
  86.       switch (udpClientSend) {
  87.       case 0:
  88.      strcat(buf, "TCP only");
  89.      break;
  90.       case 1:
  91.      strcat(buf, "simple UDP");
  92.      break;
  93.       case 2:
  94.      strcat(buf, "enforced UDP (state only)");
  95.      break;
  96.       case 3:
  97.      strcat(buf, "enforced UDP (state & weap)");
  98.      break;
  99.       }
  100.       break;
  101.    case UDP_RECV:
  102.       sprintf(buf, "Receiving with ");
  103.       switch (udpClientRecv) {
  104.       case MODE_TCP:
  105.      strcat(buf, "TCP only");
  106.      break;
  107.       case MODE_SIMPLE:
  108.      strcat(buf, "simple UDP");
  109.      break;
  110.       case MODE_FAT:
  111.      strcat(buf, "fat UDP");
  112.      break;
  113. #ifdef DOUBLE_UDP
  114.       case MODE_DOUBLE:
  115.      strcat(buf, "double UDP");
  116.      break;
  117. #endif                /* DOUBLE_UDP */
  118.       }
  119.       break;
  120.    case UDP_FORCE_RESET:
  121.       sprintf(buf, "Force reset to TCP");
  122.       break;
  123.    case UDP_UPDATE_ALL:
  124.       sprintf(buf, "Request full update (=)");
  125.       break;
  126. #ifdef GATEWAY
  127.    case UDP_GW:
  128.       sprintf(buf, "gw: %s %d/%d/%d", gw_mach, gw_serv_port, gw_port,
  129.           gw_local_port);
  130.       break;
  131. #endif
  132.    case UDP_DONE:
  133.       strcpy(buf, "Done");
  134.       break;
  135.    default:
  136.       fprintf(stderr, "netrek: UDP error: bad udprefresh(%d) call\n", i);
  137.    }
  138.  
  139.    W_WriteText(udpWin, 0, i, textColor, buf, strlen(buf), 0);
  140. }
  141.  
  142. udpaction(data)
  143.     W_Event        *data;
  144. {
  145.    register int    i;
  146.  
  147.    switch (data->y) {
  148.    case UDP_CURRENT:
  149.       if (commMode == COMM_TCP)
  150.      sendUdpReq(COMM_UDP);
  151.       else
  152.      sendUdpReq(COMM_TCP);
  153.       break;
  154.  
  155.    case UDP_STATUS:
  156.    case UDP_DROPPED:
  157.       W_Beep();
  158.       break;
  159.    case UDP_SEQUENCE:
  160.       udpSequenceChk = !udpSequenceChk;
  161.       udprefresh(UDP_SEQUENCE);
  162.       break;
  163.    case UDP_SEND:
  164.       udpClientSend++;
  165.       if (udpClientSend > 3)
  166.      udpClientSend = 0;
  167.       udprefresh(UDP_SEND);
  168.       break;
  169.    case UDP_RECV:
  170.       udpClientRecv++;
  171. #ifdef DOUBLE_UDP
  172.       if (udpClientRecv > MODE_DOUBLE)
  173.      udpClientRecv = 0;
  174. #else
  175.       if (udpClientRecv >= MODE_DOUBLE)
  176.      udpClientRecv = 0;
  177. #endif
  178.       udprefresh(UDP_RECV);
  179.       sendUdpReq(COMM_MODE + udpClientRecv);
  180.       break;
  181.    case UDP_DEBUG:
  182.       udpDebug++;
  183.       if (udpDebug > 2)
  184.      udpDebug = 0;
  185.       udprefresh(UDP_DEBUG);
  186.       break;
  187.    case UDP_FORCE_RESET:
  188.       /* clobber UDP */
  189.       UDPDIAG(("*** FORCE RESET REQUESTED\n"));
  190.       sendUdpReq(COMM_TCP);
  191.       commMode = commModeReq = COMM_TCP;
  192.       commStatus = STAT_CONNECTED;
  193.       commSwitchTimeout = 0;
  194.       udpClientSend = udpClientRecv = udpSequenceChk = udpTotal = 1;
  195.       udpDebug = udpDropped = udpRecentDropped = 0;
  196.       if (udpSock >= 0)
  197.      closeUdpConn();
  198.       for (i = 0; i < UDP_NUMOPTS; i++)
  199.      udprefresh(i);
  200.       break;
  201.    case UDP_UPDATE_ALL:
  202.       sendUdpReq(COMM_UPDATE);
  203.       break;
  204. #ifdef GATEWAY
  205.    case UDP_GW:
  206.       W_Beep();
  207.       break;
  208. #endif
  209.    case UDP_DONE:
  210.       udpdone();
  211.       break;
  212.    }
  213. }
  214.  
  215. udpdone()
  216. {
  217.    /* Unmap window */
  218.    W_UnmapWindow(udpWin);
  219. }
  220.